var ModelMangeTableInit = function(){
    var oTableInit = new Object();
    //初始化Table，页面加载时发出请求，获取数据
    oTableInit.Init = function () {
        $('#modelTable').bootstrapTable({
            url: ctx +'/equipment/type/listEuipmentModel/get.mvc',         //请求后台的URL（*）
            method: 'get',                      //请求方式（*）
//          toolbar: '#toolbar',                //工具按钮用哪个容器
            striped: true,                      //是否显示行间隔色
            cache: false,                       //是否使用缓存，默认为true，所以一般情况下需要设置一下这个属性（*）
            pagination: true,                   //是否显示分页（*）
            paginationLoop:false,
            sortable: true,                     //是否启用排序
            sortOrder: "asc",                   //排序方式
            queryParams: oTableInit.queryParams,//传递参数（*）
            sidePagination: "server",           //分页方式：client客户端分页，server服务端分页（*）
            pageNumber:1,                       //初始化加载第一页，默认第一页
            pageSize: 10,                       //每页的记录行数（*）
            pageList: [10, 25, 50, 100],        //可供选择的每页的行数（*）
            search: false,                       //是否显示表格搜索，此搜索是客户端搜索，不会进服务端，所以，个人感觉意义不大
            strictSearch: true,
            showColumns: false,                  //是否显示所有的列
            showRefresh: false,                  //是否显示刷新按钮
            minimumCountColumns: 2,             //最少允许的列数
            clickToSelect: true,                //是否启用点击选中行
            height: 500,                        //行高，如果没有设置height属性，表格自动根据记录条数觉得表格高度
            uniqueId: "pkId",                     //每一行的唯一标识，一般为主键列
            showToggle:false,                    //是否显示详细视图和列表视图的切换按钮
            cardView: false,                    //是否显示详细视图
            detailView: false,                   //是否显示父子表
            singleSelect:false,                    //禁止多选
            checkboxHeader:true,                 //列头取消多选
            columns: [
                {
                    checkbox:true,
                    align : 'center',
                    valign : 'middle',
                },
                {
                    title: '序号',
                    align : 'center',
                    valign : 'middle',
                    formatter : function (value, row, index){
                        var options = $('#modelTable').bootstrapTable('getOptions');
                        return options.pageSize * (options.pageNumber - 1) + index + 1;
                    }
                },
                {
                    field: 'modelCode',
                    title: '设备型号',
                    sortable:false,
                    align : 'center',
                    valign : 'middle',

                }, {
                    field: 'modelType',
                    title: '设备类别',
                    sortable:false,
                    align : 'center',
                    valign : 'middle',
                    formatter : function(value,row,index){
                        if(value == "1"){
                            return "生产类";
                        }else if(value=="2"){
                            return "环境类";
                        }else if(value=="3"){
                            return "能源类";
                        }else if(value=="4"){
                            return "检测类";
                        }else if(value=="5"){
                            return "生产辅助类";
                        }
                    }
                }, {
                    field: 'code',
                    title: '设备采集器型号',
                    sortable:false,
                    align : 'center',
                    valign : 'middle',
                }, {
                    field: 'supplier',
                    title: '供应商',
                    sortable:false,
                    align : 'center',
                    valign : 'middle',

                }, {
                    field: 'operationList',
                    title: '工序',
                    sortable:false,
                    align : 'center',
                    valign : 'middle',
                    formatter : function(value,row,index){
                        var html="";
                        for(var i=0;i<value.length;i++){
                            html+=value[i].opName+",";
                        }
                        return html.substring(0,html.length-1);
                    }
                },{
                    field:'type',
                    title:'采集方式',
                    sortable:false,
                    align:'center',
                    valign:'middle',
                    formatter:function(value,row,index){
                        var type =row.type+"";
                        var html="";
                        if(type.indexOf("1")!=-1){
                            html+="PLC;";
                        }
                        if(type.indexOf("2")!=-1){
                            html+="文件;";
                        }
                        if(type.indexOf("3")!=-1){
                            html+="数据库;";
                        }
                        if(type.indexOf("4")!=-1){
                            html+="上位机;";
                        }

                        return html.substring(0, html.length-1);
                    }
                },{
                    field: '',
                    title: '操作',
                    sortable:false,
                    align : 'center',
                    valign : 'middle',
                    formatter: function(value,row,index){
                        return "<a href='"+ctx+"/equipment/param/index?modelCode="+row.modelCode+"'>参数管理</a>" +
                            "<a href='"+ctx+"/equipment/paramView/index?modelCode="+row.modelCode+"'>可视化管理</a>"
                    }
                }],

        });
    };
    //得到查询的参数
    oTableInit.queryParams = function (params) {
        var temp = {   // 这里的键的名字和控制器的变量名必须一直，这边改动，控制器也需要改成一样的
            size: params.limit,   // 页面大小
            num: (params.offset/params.limit) + 1,  // 页码
            sort: params.sort,
            order: params.order,
            emModel : $("#emModel").val(),
            emModelType : $("#emModelType").val()
        };
        return temp;
    };
    return oTableInit;
};

var ModelInit =function(){
    var supplierSelect2;
    return {
        //初始化所要执行事件的方法
        init:function(){
            ModelInit.query();
            ModelInit.keyQuery();
            ModelInit.reset();
            ModelInit.refresh();
            ModelInit.del();
            ModelInit.add();
            ModelInit.update();
            ModelInit.validatorForm();
            ModelInit.setModelMq();
            SystemCommon._initOpSelect2();
            SystemCommon._initOpSelect2();
            ModelInit._validatorFormProd();
            ModelInit._changeModelType();
            supplierSelect2 = ModelInit.getSupplier();
        },
        //条件查询
        query : function(){
            $("#queryModel").on("click","",function(){
                $('#modelTable').bootstrapTable('refreshOptions',{
                    pageNumber:1,
                });
            });
        },
        //按键触发查询
        keyQuery : function(){
            $(".queryModelMange").keypress(function (e) {
                if (e.which == 13) {
                    $("#queryModel").trigger("click");
                }
            });
        },
        //重置功能
        reset : function() {
            $("#resetModel").on("click","",function(){
                $(".clearfix input").val("");
                $(".clearfix select").val("");
            });
        },
        refresh : function(){
            //刷新
            $("#refreshModel").on("click",function(){
                $('#modelTable').bootstrapTable('refresh');
            });
        },

        getSupplier :function() {
            var select2 = $('.supplier').select2({
                ajax: {
                    url: ctx +'/equipment/type/getSupplier/get.mvc',
                    dataType: 'json',
                    aynsc :false,
                    data: function (params) {
                        var query = {
                            search: params.term,
                            num: params.page || 1,
                            size:10
                        };
                        // Query parameters will be ?search=[term]&page=[page]
                        return query;
                    },
                    processResults: function (response) {
                        // Tranforms the top-level key of the response object from 'items' to 'results'
                        var test =new Array();
                        if(response&&response.data){
                            var data = response.data;
                            for ( var int = 0; int < data.length; int++) {
                                var obj=new Object();
                                obj.id=data[int].dictKey;
                                obj.text=data[int].dictValue;
                                test.push(obj);
                            }
                            var result = {
                                results: test
                            };
                            return result;
                        }
                        return null;

                    },
                    // Additional AJAX parameters go here; see the end of this chapter for the full code of this example
                    cache: true

                },
                placeholder: '请选择',
                language: "zh-CN",
                escapeMarkup: function (markup) { return markup; }, // let our custom formatter work
                minimumInputLength: 0
            });
            return select2;

        },
        //删除设备类别
        del : function(){
            /**
             * 删除功能
             */
            $("#delModel").on("click","",function(){
                //获取每一行的选中行的所有ids
                var ids = $.map($('#modelTable').bootstrapTable('getSelections'), function (row) {
                    return row.pkId;
                });
                console.log(ids);
                if (ids.length <= 0 ) {
                    DialogUtil.ok("请选择需要操作的记录");
                    return;
                }
                DialogUtil.ok_and_cancel("是否确定删除该设备型号？",function(){
                        $.ajax({
                            url: ctx + '/equipment/type/delEuipmentModelById/del.mvc',
                            type:"post",
                            dataType:'json',
                            data : {
                                pkId : ids.toString()
                            },
                            success : function(response){
                                console.log(response);
                                if (response.result == true) {
                                    DialogUtil.warning("删除成功");
                                    $('#modelTable').bootstrapTable('refresh');
                                }
                                if (response.result == false && response.message == "该设备类别下有设备，无法删除") {
                                    DialogUtil.warning("该设备类别下有设备，无法删除");
                                }
                            },
                            error: function(XMLHttpRequest, textStatus, errorThrown){
                                DialogUtil.warning("系统错误");
                            }
                        });
                    },
                    function(){
                    });
            });
        },
        //校验生产类
        _validatorFormProd : function(){

            $(".operationLable").removeClass("form-required form-required-4").addClass("form-required form-required-4");
            $("#defaultForm").bootstrapValidator({
                message: 'This value is not valid',
                live: 'submitted',
                fields: {/*验证*/
                    modelCode: {
                        message: '设备型号无效',
                        validators: {
                            notEmpty: {
                                message: '设备型号不能为空'
                            },
                            stringLength: {
                                max: 20,
                                message: '设备型号不能超过20个字符'
                            }
                        }
                    },
                    modelType: {
                        message: '设备类型无效',
                        validators: {
                            notEmpty: {
                                message: '设备类型不能为空'
                            },
                            stringLength: {
                                max: 20,
                                message: '设备类型不能超过20个字符'
                            }
                        }
                    },
                    code: {
                        message: '设备采集器型号无效',
                        validators: {
                            notEmpty: {
                                message: '设备采集器型号不能为空'
                            },
                            stringLength: {
                                max: 20,
                                message: '设备采集器型号不能超过20个字符'
                            }
                        }
                    },
                    supplier: {
                        message: '供应商无效',
                        validators: {
                            notEmpty: {
                                message: '供应商不能为空'
                            },
                            stringLength: {
                                max: 20,
                                message: '供应商不能超过20个字符'
                            }
                        }
                    },
                    type:{
                        message: '采集方式尚未选择',
                        validators: {
                            notEmpty: {
                                message: '采集方式尚未选择'
                            }
                        }
                    },
                    operationId:{
                        message: '工序尚未选择',
                        validators: {
                            notEmpty: {
                                message: '工序尚未选择'
                            }
                        }
                    }

                }
            });
        },
        //校验非生产类
        _validatorForm : function(){
            $(".operationLable").removeClass("form-required form-required-4");

            $("#defaultForm").bootstrapValidator({
                message: 'This value is not valid',
                live: 'submitted',
                fields: {/*验证*/
                    modelCode: {
                        message: '设备型号无效',
                        validators: {
                            notEmpty: {
                                message: '设备型号不能为空'
                            },
                            stringLength: {
                                max: 20,
                                message: '设备型号不能超过20个字符'
                            }
                        }
                    },
                    modelType: {
                        message: '设备类型无效',
                        validators: {
                            notEmpty: {
                                message: '设备类型不能为空'
                            },
                            stringLength: {
                                max: 20,
                                message: '设备类型不能超过20个字符'
                            }
                        }
                    },
                    code: {
                        message: '设备采集器型号无效',
                        validators: {
                            notEmpty: {
                                message: '设备采集器型号不能为空'
                            },
                            stringLength: {
                                max: 20,
                                message: '设备采集器型号不能超过20个字符'
                            }
                        }
                    },
                    supplier: {
                        message: '供应商无效',
                        validators: {
                            notEmpty: {
                                message: '供应商不能为空'
                            },
                            stringLength: {
                                max: 20,
                                message: '供应商不能超过20个字符'
                            }
                        }
                    },
                    type:{
                        message: '采集方式尚未选择',
                        validators: {
                            notEmpty: {
                                message: '采集方式尚未选择'
                            }
                        }
                    }

                }
            });
        },

        _changeModelType : function(){
            $(".modelType").on("change",function(){
                var  type =$(this).val();
                $('#defaultForm').data('bootstrapValidator').destroy();
                $(".operation").empty();
                if(type==1 || type==5){//生产类、生产辅助类
                    $(".operationDiv").show();
                    ModelInit._validatorFormProd();
                }else{
                    $(".operationDiv").hide();
                    ModelInit._validatorForm();
                }
            })
        },

        //校验表单
        validatorForm : function(){

            //模态框消失清空信息
            $("#myModal").on("hidden.bs.modal",function(e){
                $('#myModal input[type=text]').each(function() {
                    $(this).val("");
                });
                $('#myModal input[type=checkbox]').each(function() {
                    $(this).prop('checked',false);
                });
                $(".checkTypeGroup").remove();
                $(".operation").empty();
                $(".supplier").val(null).trigger("change");
                $('#defaultForm').data('bootstrapValidator').destroy();
                $("#modelCode").attr("disabled",false);
                ModelInit._validatorForm();
            });

            $("#myModal_MQ").on("hidden.bs.modal",function(e){
                $('#myModal input[type=text]').each(function() {
                    $(this).val("");
                });
                $('#myModal input[type=checkbox]').each(function() {
                    $(this).prop('checked',false);
                });
                $(".checkTypeGroup").remove();
                $('#defaultForm').data('bootstrapValidator').destroy();
                ModelInit._validatorForm();
            });
        },




        //新增用户
        add : function(){
            //新增用户
            $("#addModel").on("click",function(){
                $('#myModal .modal-title').html("新增");
                var checkHtml =template('checkType',{});
                $("#myModal #pkId").before(checkHtml);
                $('#myModal').modal();
                $.fn.modal.Constructor.prototype.enforceFocus = function() {
                    $("#myModal input[name='modelCode']").focus();
                };
                $("#myModal .yes").attr("disabled",false);

            });
            //新增用户-确定
            $(".modelForm .yes").on(
                "click",
                function() {
                    $("#defaultForm").data("bootstrapValidator").validate();
                    var flag = $("#defaultForm").data("bootstrapValidator").isValid();
                    if(!flag){
                        //未通过验证
                        return false;
                    }

                    if($(".modelForm").find("input[type=checkbox]:checked").length<1){
                        $(".error-tips").css("display","block");
                        return false;
                    }
                    $("#myModal .yes").attr("disabled",true);
                    var collectionType="";
                    $(".modelForm ").find("input:checkbox:checked").each(function(){
                        collectionType+=$(this).val()+",";
                    });
                    console.log(collectionType);

                    $("input[name=collectionType]").val(collectionType.substring(0, collectionType.length-1));

                    $.ajax({
                        url : ctx + '/equipment/type/saveEquipmentModel/save.mvc',
                        type : "post",
                        dataType : 'json',
                        data : $(".modelForm #defaultForm").serialize(),
                        success : function(response) {
                            if (response.result == true) {
                                DialogUtil.ok("保存成功");
                                $('#myModal').modal('hide');
                                $('#modelTable').bootstrapTable('refresh');
                            }
                            console.log(response);
                            if (response.result == false) {
                                DialogUtil.warning(response.message);
                                $("#myModal .yes").attr("disabled",false);
                            }
                        },
                        error : function(XMLHttpRequest, textStatus, errorThrown) {
                            console.log(data);
                            alert("系统错误");
                        }
                    });
                    return false;
                });
        },
        //修改用户
        update : function(){
            //修改用户
            $("#updateModel").on("click",function(){
                $('#myModal .modal-title').html("修改");
                var checkHtml =template('checkType',{});
                $("#myModal #pkId").before(checkHtml);
                var ids = $.map($('#modelTable').bootstrapTable('getSelections'), function (row) {
                    return row.pkId;
                });
                if (ids.length != 1 ) {
                    DialogUtil.warning("请选择一行修改");
                    return;
                }
                $("#myModal .yes").attr("disabled",false);
                ModelInit.validatorForm();
                //初始化用户角色
                setTimeout(function timeOut(){
                    $.ajax({
                        url: ctx +'/equipment/type/getEuipmentModelById/get.mvc',
                        type:"post",
                        dataType:'json',
                        data : {
                            pkId : ids.toString()
                        },
                        success : function(response){
                            $('#myModal').modal();
                            $("#modelCode").attr("disabled",true);
                            var opSelect2 = SystemCommon._initOpSelect2();
                            $("#myModal input[name='modelCode']").val(response.modelCode);

                            var modelType =response.modelType;
                            // $("#myModal .modelType").find("option[value='"+modelType+"']").attr("selected","selected");
                            $("#myModal .modelType").val(modelType);
                            //判断校验逻辑
                            $('#defaultForm').data('bootstrapValidator').destroy();
                            if(modelType==1){
                                ModelInit._validatorFormProd();
                            }else{
                                ModelInit._validatorForm();
                            }


                            $("#myModal input[name='code']").val(response.code);
                            var supplier = response.supplier;
                            var supplierName = response.supplierName;
                            if(supplier!=null&&supplierName!=null) {
                                var option = new Option(supplierName,supplier,true,true);
                                supplierSelect2.append(option);
                                supplierSelect2.trigger("change");
                            }
                            $("#myModal input[name='ecRoute']").val(response.ecRoute);
                            var type=response.type;
                            if(type.indexOf("1")!=-1){
//				    		$("input[name=plcType]").attr("checked","checked");
                                $("input[name=plcType]").prop('checked',true);
                            }
                            if(type.indexOf("2")!=-1){
//				    		$("input[name=fileType]").attr("checked","checked");
                                $("input[name=fileType]").prop('checked',true);
                            }
                            if(type.indexOf("3")!=-1){
//				    		$("input[name=databaseType]").attr("checked","checked");
                                $("input[name=databaseType]").prop('checked',true);
                            }
                            if(type.indexOf("4")!=-1){
//				    		$("input[name=upperType]").attr("checked","checked");
                                $("input[name=upperType]").prop('checked',true);
                            }
                            //工序
                            for(var i=0;i<response.operationList.length;i++){
                                var option = new Option(response.operationList[i].opName,response.operationList[i].opId,true,true);
                                opSelect2.append(option);
                                opSelect2.trigger("change");
                            }

                            //默认id
                            $("#myModal input[name='pkId']").val(ids.toString());

                        },
                        error: function(XMLHttpRequest, textStatus, errorThrown){
                            console.log(data);
                            alert("系统错误");
                        }
                    });
                },100);
            });
        },
        //点击下拉框--角色信息


        //MQ配置
        setModelMq: function(){
            $('body').on('click','.mqConfiguration',function(){
                var modelId=$(this).data("modelid");
                $.ajax({
                    url: ctx +'/equipment/register/listAllModelMq/get.mvc',
                    type:"post",
                    dataType:'json',
                    data : {
                        modelId :modelId
                    },
                    success : function(response){

                        //渲染页面
//				    	console.log(response.data);
                        $("#myModal_MQ .item-list").remove();
                        var data =response.data;
                        var html =template('test',{data:data});
                        $(".add-row").before(html);
                        $(".add-row").data("modelId",modelId);
                        $('#myModal_MQ').modal();


                    },
                    error: function(XMLHttpRequest, textStatus, errorThrown){
                        console.log(data);
                        alert("系统错误");
                    }

                });

            });
            //绑定删除
            $('body').on("click",".del-row",function(){
                $(this).parents('.item-list').remove();
            });

            //全选
            $('.content-box-MQ').on('click', '.selectAll', function() {

                $(this).parents('.item-list')
                    .find('.bottom input')
                    .prop('checked', this.checked);
            });

            //绑定添加
            $('body').on("click",'.add-row',function(){
                var modelId=$(this).data("modelId");
                //获取队列名称
                $.ajax({
                    url: ctx +'/equipment/register//listModelParams/get.mvc',
                    type:"post",
                    dataType:'json',
                    data : {
                        modelId :modelId
                    },
                    success : function(response){

                        var data =response.data;
                        var html =template('test',{data:data});
                        $(".add-row").before(html);
                    },
                    error: function(XMLHttpRequest, textStatus, errorThrown){
                        console.log(data);
                        alert("系统错误");
                    }

                });


            });

            //保存mQ配置
            $('body').on("click","#mqSave",function(){
                //判断是否合格
                var flag =true;

                var data ={};
                data.modelId=$(this).parent().parent().find(".add-row").data("modelId");
                var lists=Array();

                //循环获取对象
                $(".item-list").each(function(){

                    var mqName =$(this).find(".mqName").val();

                    var lengths=
                        $(this).find("input[type=checkbox]:checked.paramCheck").length;

                    //判断队列名称是否为空
                    if(mqName.replace(/(^s*)|(s*$)/g, "").length ==0 ){
                        flag=false;
                        $(this).find(".error-tips-1").css("display","block")
                        $(this).find(".error-tips-1").html("队列名称不能为空!!!");
                    }

                    if(lengths ==0){
                        flag=false;
                        $(this).find(".error-tips-1").css("display","block")
                        $(this).find(".error-tips-1").html("参数至少选一个!!!");
                    }



                    var params="";
                    $(this).find("input[type=checkbox]:checked.paramCheck").each(function(){
                        params+=$(this).val()+",";
                    });

                    lists.push(mqName+";"+params);
                });
                data.data=lists;

                if(!flag){
                    return false;
                }


                //提交查询结果
                $.ajax({
                    url: ctx +'/equipment/register/saveModelMq/save.mvc',
                    type:"post",
                    dataType:'json',
                    data : {
                        data :JSON.stringify(data)
                    },
                    success : function(response){
                        if(response.result){
                            $('#myModal_MQ').modal('hide');
                        }else{
                            alert("系统错误");
                        }

                    },
                    error: function(XMLHttpRequest, textStatus, errorThrown){
                        console.log(data);
                        alert("系统错误");
                    }

                });


            });


        },



    };
}();

//文档加载完成后激活事件
jQuery(document).ready(function() {
    //1.初始化Table
    var oTable = new ModelMangeTableInit();
    //激活table事件
    oTable.Init();
    //初始化页面
    ModelInit.init();
});

